package prac;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Zhongshu {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in); // 创建Scanner对象以便读取输入

        int n = sc.nextInt(); // 读入总种植数量N

        List<Integer> wch=new ArrayList<>();//未成活数量
        int m = sc.nextInt(); // 读入未成活胡杨数量M
        for (int i = 0; i < m; i++) {
            wch.add(sc.nextInt()); // 读入每棵未成活胡杨的编号
        }

        int k = sc.nextInt(); // 读入最多可以补种的数量K

        int max= 0; //
        int start=0;
        int end=0;
        for (int i = 0; i < m-k+1; i++) { // 遍历所有树的位置
            //计算开始位置
            if(i==0){
                start=1;
            }else{
                start=wch.get(i-1)+1;
            }
            //计算结束位置
            int endIndx=i+k;
            if(endIndx==m){
                end=n;
            }else{
                end=wch.get(i+1)-1;
            }
            max=Math.max(max,end-start+1);

        }

        System.out.println(max); // 输出最大连续胡杨数
    }

}
